/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package reppconn;

import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import model.DBWriter;
import model.RIModel;
import org.xml.sax.SAXException;

/**
 *
 * @author Nargisse
 */
public class Parser {
    
    private SAXParserFactory fabrique;
    private SAXParser parseur;
    private ContentHandler handler;
   
    
    
    public Parser(RIModel model) {
        try {
            // création d'une fabrique de parseurs SAX
            fabrique = SAXParserFactory.newInstance();

            // création d'un parseur SAX
            parseur = fabrique.newSAXParser();

            // instanciation de notre handler
            handler = new ContentHandler(model);
            
        } catch (ParserConfigurationException pce) {
            System.out.println("Erreur de configuration du parseur");
            System.out.println("Lors de l'appel à newSAXParser()");
        } catch (SAXException se) {
            System.out.println("Erreur lors de la création du parseur");
        }
    }
    
    public void parseFile(String filePath) {
        File file = new File(filePath);
        this.parseFile(file);
    }
    
    public void parseFile(File file) {
        try {
            //on recupere le nom du fichier
            handler.setCurrentDocument("Collection/"+file.getName());
            parseur.parse(file, handler);
            
        } catch (SAXException ex) {
            System.out.println("Erreur de parsing");
            System.out.println("Lors de l'appel à parse() sur le fichier "+file.getPath());
        } catch (IOException ex) {
            Logger.getLogger(Parser.class.getName()).log(Level.SEVERE, null, ex);
        }     
    }
    
    public void parseDirectory(String directoryPath) {
        File dir = new File(directoryPath);
        File[] files = dir.listFiles();
        //DocumentsCollection docs = new DocumentsCollection();
        
        for(int i = 0; i<files.length; i++) {
           if (files[i].getName().endsWith(".xml")) {
             this.parseFile(files[i]);
           }
        }     
    }
 
}
